package demo7;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**
 * 介绍一个对象在Spring容器中被管理时，生命周期的几个节点方法
 */
@Component
public class Person {
    private String name;

    //1:构造器是一个对象生命周期中第一个被调用的方法
    public Person(){
        System.out.println("1:Person的构造器调用了。");
    }

    public String getName() {
        return name;
    }

    //2:生命周期的第二个方法，当容器实例化对象完毕后，就会调用被@Value注解标注的set方法来进行属性初始化
    @Value("张三")
    public void setName(String name) {
        System.out.println("2:name属性对应的set方法被调用了");
        this.name = name;
    }

    //3:生命周期中第三个操作，当容器完成初始化对象后就会调用被@PostConstruct标注的方法，通知该对象初始化完毕
    @PostConstruct
    public void init(){//方法名叫什么都可以
        System.out.println("3:Person初始化完毕了,name:"+name);
    }

    @PreDestroy
    public void preDestroy(){
        System.out.println("4:容器要关闭了，通知我们这件事");
    }
}








